今天要來介紹 Go 的一些基本語法 part1!
大家之前如果有寫過 Typescript 和 C 語言的話,我覺得 Go 就是這兩種語言的綜合體 😆,有 C 語言指標的概念也有 Typescript 強型別的概念~ 比較特別的是它沒有 while
的用法,只有 for
迴圈~
那我們就開始吧!
這邊會先用一些簡單的例子讓大家看一下語法的差別。
📌 在程式結構上,每個 Go 程式至少要有一個 main
套件 (package),並且從 main()
函式開始執行。像是昨天練習印出的 Hello World 程式就是放在 main
裡頭。
在變數的宣告上,基本上和其他的語言是沒有什麼差別的,比較特別的就是「 短變數 」宣告的位置要特別留意一下。
package main
import "fmt"
var a int = 10 // 明確指定型別
var b = 20 // 自動推斷型別
func main() {
c := 30 // 短變數宣告 (只能在 function 裡用)
const PI = 3.14 // 不可更改的常數
fmt.Println(a, b, c, PI)
}
基本型別幾乎跟其他語言一樣,不外乎是一些 整數、浮點數、字串和布林。要注意的是它宣告變數方式的寫法,當然也可以用剛剛第一點中提到的 「 短變數宣告 」 ,這樣就不需要特別寫型態了~
不過我覺得在寫程式時還是要把型態定義清楚比較好,除了是與其他人一起合作的時候,能夠讓對方輕鬆了解之外,當程式變得複雜時也會比較好 debug 😆。
var x int = 100 // 整數
var y float64 = 3.14 // 浮點數
var z string = "hello" // 字串
var ok bool = true // 布林值
這邊比較特別的是省略了 if
的括號 ()
,等等要介紹的 for
也一樣省略括號了!(突然被拿掉括號,覺得好不習慣 😶)。
Go 總共有 2 種常見的用法:
else if
或是 else
。package main
import "fmt"
func main() {
score := 85 //要留意短變數宣告的位子一定要在 fuction 裡面唷
if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
}
if
判斷前,先做一個宣告或賦值,這是 recover()
常用的做法。(這部分在後面介紹錯誤處理時會再詳細說明)package main
import "fmt"
func main() {
if r := recover(); r != nil {
fmt.Println("捕捉到 panic:", r)
}
}
等於:
package main
import "fmt"
func main() {
r := recover()
if r != nil {
fmt.Println("捕捉到 panic:", r)
}
}
Go 雖然只有 for
迴圈,但也是可以當成 while
使用,是不是很彈性~~ 這邊只要注意要記得省略括號就好,跟剛剛的 if
一樣,一般情況時,用法基本上是一樣的。
package main
import "fmt"
func main() {
// 用法一(for 迴圈)
for i := 0; i < 5; i++ {
fmt.Println("i =", i)
}
// 用法二(類似 while 用法)
j := 0
for j < 3 {
fmt.Println("j =", j)
j++
}
}
另外有些方式比較特別一些,分別是 無限迴圈、遍歷 這兩種方式:
package main
import "fmt"
func main() {
for {
fmt.Println("一直跑...")
break // 要加上 break 才能跳出
}
}
//遍歷 slice
package main
import "fmt"
func main() {
nums := []int{10, 20, 30}
for i, v := range nums { // 取得索引和值
fmt.Println("索引:", i, "值:", v)
}
for _i, v := range nums { // 只需要取值
fmt.Println("索引:", i, "值:", v)
}
m := map[string]int{"a": 1, "b": 2} // 遍歷 map
for k, v := range m {
fmt.Println("鍵:", k, "值:", v)
}
for i, r := range "哈囉" { // 遍歷字串
fmt.Println(i, string(r))
}
}
//範例
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 2 {
continue // 跳過這次迴圈
}
if i == 4 {
break // 提前結束迴圈
}
fmt.Println(i)
}
}
這邊一樣是省略括號就好唷!
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
default:
fmt.Println("Other day")
}
}
今天就先介紹到這邊~
下一章節會繼續介紹 Go 基本語法 part2:陣列、函式、結構以及指標,大家明天見啦!